Reklama
Pokazuje wyniki od 1 do 10 z 10

Temat: Poszukuję programisty C++ do współpracy przy serwerze WoW

  1. #1
    Avatar Szulerski Majsiek
    Data rejestracji
    2006
    Położenie
    Białystok
    Wiek
    33
    Posty
    342
    Siła reputacji
    19

    Domyślny Poszukuję programisty C++ do współpracy przy serwerze WoW

    Witam,

    Właśnie poszukuje 2-3 programistów C++ do wspólnego projektu - a jest nim emulator WoW: Mists of Pandaria, wszystko jest legalne więc chyba zamieszczam zgodnie z regulaminem.


    Prace podzielimy na 3 etapy, mianowicie:

    - Budowanie game-contentu, czyli pisanie questow, poprawianie spawnu i loot'a z NPC
    - Oskryptowanie Spelli
    - Poprawki w samym silniku (wątpie że bedą potrzebne), ew. jakieś nasze zmiany

    Pracy jest na około 2-3 miesiące licząc na 3 osobowa ekipę. Po tym czasie odpalamy dedyk, zapełniamy lukę, bo takich serwerów jak nasz praktycznie nie ma - no i dzielimy sie dotacjami, po równo. Jeśli ktoś odpadnie w trakcie to zostanie mu wypłacona część dochodów zaraz po starcie serwera.

    Szacunkowa liczba graczy na naszym silniku, zakładając że nie będzie on zbyt stabilny na początku, to jakies 2 tys. osób - oczywiście serwer będzie międzynarodowy więc może uda się dobic do 3,5tys graczy. Przełoży to się na około kilkaset dolarów miesięcznie, samego zysku.

    Nie zaczynamy od zera, gdyż silnik na ktorym pracujemy jest open-source i znajduje się https://github.com/ProjectSkyfire/SkyFire_5xx . Również posiadam wiekszość plików DB (coordy, loot itp), które wymagają sprawdzenia i poprawek.

    Wymagania:

    - średnia znajomość c++ (niekoniecznie biegła gdyż i tak korzystamy z wew. funkcji silnika)
    - doświadczenie z korzystania z wspólnego repozytorium
    - mile widziana znajomość tematyki gry WoW
    - wolny czas dwa razy w tygodniu na krótka pogawędkę z całą ekipą na skype

    Ekipa (moja poprzednia ekipa sie nieco się sypnęła)
    - projectdevcore (zajmuje się protokołem klienta 5.4.0)
    - kontownik (czyli ja), skrypty, funkcje w silniku


    Szczegóły podam jeśli ktoś będzie chętny. Można pisać na [email protected] lub facebook.com/kontownik ostatecznie skype: kontownik.

    Albo w temacie :)


    Przykład takiego pseudo-kodu NPC dla średniozaawansowanych - mam nadzieje ze jest czytelny :)
    Kod:
    /**********************************/
    /*****The Disciple's Challenge*****/
    /**********************************/
    class mob_jaomin_ro : public CreatureScript
    {
    public :
        mob_jaomin_ro() : CreatureScript("mob_jaomin_ro") { }
    
        struct mob_jaomin_roAI : public ScriptedAI
        {
        public :
            mob_jaomin_roAI(Creature* c) : ScriptedAI(c) {  Reset(); }
    		bool bHome;
    		bool AggroSaid;
    		
    		bool sitting_state;
    		bool disciple_defeated;
    		
            void Reset()
            {
                events.Reset();
    			me->SetUInt32Value(UNIT_FIELD_BYTES_1, 1); //sit
    			me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
    			me->SetControlled(false, UNIT_STATE_STUNNED);
    			bHome = false;
    			AggroSaid = false;
    			sitting_state = true;
    			disciple_defeated = false;
            }
    
    		void MoveInLineOfSight(Unit* who)
            {
    			if (who && who->GetTypeId() == TYPEID_PLAYER && !AggroSaid) //&& me->IsHostileTo(who) && !AggroSaid)
    			{
    				Player* player = who->ToPlayer();
    				if(player->hasQuest(29409) && player->GetQuestStatus(29409) == QUEST_STATUS_INCOMPLETE && me->IsWithinDistInMap(who, 23.0f))
    				{
    					me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
    					Talk(SAY_AGGRO);
    					sitting_state = false;
    					me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); //stand
    					AggroSaid = true;
    				}
    			}
                
            }
    		
            void EnterCombat(Unit *pWho)
            {	
    			me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); // NONE
    			me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); //stand
                if(pWho->GetTypeId() != TYPEID_PLAYER)
                {
                    me->Kill(pWho, false);
                    EnterEvadeMode();
    				AggroSaid = false;
    				bHome = true;
                }
                ScheduleEvents();
            }
    
            void DamageTaken(Unit *attacker, uint32 &amount)
            {
                if(me->GetHealth() <= amount)
                {
                    amount = 0 ;
                    me->SetHealth(me->GetMaxHealth()/10);
    				
    				/*
    				me->DeleteThreatList();
    				me->CombatStop(true);
                    me->AttackStop();
    				*/
    				disciple_defeated = true;
    				me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
    				me->SetControlled(true, UNIT_STATE_STUNNED);
                    if(attacker->ToPlayer())
    				{
    					if(attacker->ToPlayer()->hasQuest(29409) && attacker->ToPlayer()->GetQuestStatus(29409) == QUEST_STATUS_INCOMPLETE)
    					{
    					events.ScheduleEvent(EVENT_DEFEAT_TALKS, 1000);
    					}
    				}
    
    				
                }
            }
    
    		
    		void JustReachedHome() //home-position
            {
    
                if (!bHome) //monster not returned
                    return;
    
    			bHome = false;
    			ScriptedAI::JustReachedHome();
    			Reset();
            }
    		
            void UpdateAI(uint32 diff)
            {
    
    			
    			if (!me->getVictim())
    				return;
    
                events.Update(diff);
    
                if(me->HasUnitState(UNIT_STATE_CASTING))
                    return;
    
                while(uint32 eventId = events.ExecuteEvent())
                {
                    switch(eventId)
                    {
                    case EVENT_HAWK :
                        if(me->getVictim())
    					{
                            DoCast(me->getVictim(), SPELL_HAWK, false);
    					}
                        events.ScheduleEvent(EVENT_ELEPHANT, 10000);
                        break ;
    
                    case EVENT_ELEPHANT :
                        if(me->getVictim())
                            DoCast(me->getVictim(), SPELL_ELEPHANT, false);
                        events.ScheduleEvent(EVENT_HAWK, 10000);
                        break;
    
                    case EVENT_ROUNDHOUSE :
                        DoCastAOE(SPELL_ROUNDHOUSE, false);
                        events.ScheduleEvent(EVENT_ROUNDHOUSE, 5000);
                        break;
    				
    				case EVENT_DEFEAT_TALKS :
    					Talk(SAY_DEFEAT);
    					me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
                        events.ScheduleEvent(EVENT_RETURN_TO_HOME, 2000);
                        break;
    
    				case EVENT_RETURN_TO_HOME :
    					if(me->getVictim() && me->getVictim()->GetTypeId() == TYPEID_PLAYER)
    					{
    						Player* p = me->getVictim()->ToPlayer();
    						if(p->hasQuest(29409) && p->GetQuestStatus(29409) == QUEST_STATUS_INCOMPLETE)
    						{
    							p->KilledMonsterCredit(me->GetEntry(), 0);
    							p->SetPhaseMask(16, true); //master shang xi spawned
    						}
    					}
    					me->SetControlled(false, UNIT_STATE_STUNNED);
    					bHome = true;
    					EnterEvadeMode(); // bug?
                        break;
    
                    default :
                        break;
                    }
                }
                DoMeleeAttackIfReady();
    			EnterEvadeIfOutOfCombatArea(diff);
            }
    
        private :
            EventMap events ;
    
            inline void ScheduleEvents()
            {
                events.ScheduleEvent(RAND(EVENT_HAWK, EVENT_ELEPHANT), 3000);
                events.ScheduleEvent(EVENT_ROUNDHOUSE, 5000);
            }
    
            enum Events
            {
                EVENT_HAWK = 1,
                EVENT_ELEPHANT,
                EVENT_ROUNDHOUSE,
    			EVENT_DEFEAT_TALKS,
    			EVENT_RETURN_TO_HOME
            };
    
            enum Spells
            {
                SPELL_HAWK = 108955,
                SPELL_ELEPHANT = 108938,
                SPELL_ROUNDHOUSE = 119301
            };
    
            enum Says
            {
    			SAY_AGGRO = 0,
                SAY_DEFEAT = 1
            };
        };
    
        CreatureAI* GetAI(Creature *c) const
        {
            return new mob_jaomin_roAI(c);
        }
    
    };
    Ostatnio zmieniony przez Szulerski Majsiek : 09-05-2014, 10:24

  2. #2

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    kilkaset dolarów mc z 2.5 tys osob online?
    xD

  3. Reklama
  4. #3
    Avatar Szulerski Majsiek
    Data rejestracji
    2006
    Położenie
    Białystok
    Wiek
    33
    Posty
    342
    Siła reputacji
    19

    Domyślny

    Tak, kilkaset na glowe i po odliczeniu oplat typu maszyna, reklama, jakis firewall. Cos nie tak?

  5. #4

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj Szulerski Majsiek napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Tak, kilkaset na glowe i po odliczeniu oplat typu maszyna, reklama, jakis firewall. Cos nie tak?
    prowadzac kiedys projekt gry 150 osob online mialem mniejwiecej tyle ( granted, bylem sam, ale i tak skala jest wiele wiele razy mniejsza ). Dlatego mnie to zastanawia.

  6. #5
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    W sumie mógłbym spróbować coś porobić, tylko zastanawiam się w jaki sposób się na takich serwerach zarabia? Dotacje?

  7. #6
    Avatar Szulerski Majsiek
    Data rejestracji
    2006
    Położenie
    Białystok
    Wiek
    33
    Posty
    342
    Siła reputacji
    19

    Domyślny

    Tak zarabia sie glownie na dotacjach. Przedmioty albo konto VIP.
    Czyli takie konto ktory umozliwia ci wchodzenie bez kolejki czy inne tam feature smieszne w grze. Jakies kolorowe smoki jako mounty czy cos.

    Wieksze serwer zarabiaja rowniez na reklamach na forum.

    przykład : https://www.molten-wow.com/


    Kod jest w C++ ale pisze sie w pseudo-kodzie kto robil otsy jest w stanie szybko to zalapac. Po 2 tygodniach od sciagniecia i pierwszego zerkniecia w kod, bylem w stanie sporo zdzialac. Teraz (jakies 3 miesiace prawie) jestem w stanie zrobic prawie wszystko.

    Do pisania questow wystarczy wiedziec jak uzywac pętli, switch'e itp. Jak inicjowac zmienne w C++ oraz podstawy o klasach (podstawy doslownie).
    Ostatnio zmieniony przez Szulerski Majsiek : 08-05-2014, 20:30

  8. #7
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    W takim razie wchodzę w projekt :) Jak się najlepiej z Tobą kontaktować?

  9. #8
    Avatar Szulerski Majsiek
    Data rejestracji
    2006
    Położenie
    Białystok
    Wiek
    33
    Posty
    342
    Siła reputacji
    19

    Domyślny

    na poczatek zapraszam na skype: kontownik.

    Cytuj Alex Fortune napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    prowadzac kiedys projekt gry 150 osob online mialem mniejwiecej tyle ( granted, bylem sam, ale i tak skala jest wiele wiele razy mniejsza ). Dlatego mnie to zastanawia.
    z reguly wole byc mile zaskoczony niz obiecywac tysiace. Ja mialem serwer 250 osob i zarabial x2 tyle co wkladalem. Takze napewno masz racje :) Zapraszam do wspolpracy ze mna.
    Ostatnio zmieniony przez Szulerski Majsiek : 08-05-2014, 20:35

  10. #9
    Avatar Szulerski Majsiek
    Data rejestracji
    2006
    Położenie
    Białystok
    Wiek
    33
    Posty
    342
    Siła reputacji
    19

    Domyślny

    dorzuciłem fragment kodu, jeśli ktoś chce się pobawić "podnieść skilla" w programowaniu, popracować na wspolnym repo (przy okazji zarobic) to zapraszam do dodawania mnie na skypie :)
    Ostatnio zmieniony przez Szulerski Majsiek : 11-05-2014, 11:56

  11. #10
    Avatar Pytoo
    Data rejestracji
    2006
    Położenie
    Olsztyn
    Wiek
    32
    Posty
    466
    Siła reputacji
    18

    Domyślny

    zgłosiłem sie do projektu dla wzmocnienia c++. Co wyjdzie to wyjdzie :)

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [Poszukuje] programisty/wykonawcy OTS
    Przez Hell Cow w dziale Open Tibia Server
    Odpowiedzi: 11
    Ostatni post: 07-02-2023, 12:09
  2. Poszukuję programisty
    Przez Isaac Exe w dziale Strefa developerska
    Odpowiedzi: 20
    Ostatni post: 20-02-2018, 11:51
  3. Poszukuję programisty
    Przez TheBonZi w dziale Strefa developerska
    Odpowiedzi: 1
    Ostatni post: 03-07-2016, 16:52
  4. Odpowiedzi: 0
    Ostatni post: 17-01-2016, 02:45
  5. Sprzedam Wow WoD100/Wow MoP/Warcraft 3+Frozen Throne
    Przez Zakon w dziale Giełda
    Odpowiedzi: 0
    Ostatni post: 01-02-2015, 11:40

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •