to trwalo i tak o 10 minut za dlugo, transparentnosc kurwa jest najwazniejsza na tym otsie wiec transparentnie cie wyjebalismy bo siales ferment
Wersja do druku
ots nie przetrwa proby otlandowej a co dopiero torgowej mowie wam to bo administracja nie ma PSYCHY
14:52 New record: 4 players are logged in.
I co? Nikt nie wierzył...
Igła na lata.
Przynajmniej póki nie wbije seba lv15 i nie wjebie 200lvla w tydzień
@Berry ;
Spoko juz ogarniete xD
a wlasciwie to czemu robicie jakieś kółeczka wzajemnej adoracji i zamknięte grupy zamiast dopuścić jak najwięcej userów koledzy?
ale w dyskusji chyba chodziło o takiego naprawdę zajebistego otsa, jakiego jeszcze nie było, a z tego, co teraz czytam, to chcecie stawiać jakiegoś zbugowanego torgotsa czy inną igiełkę na datapacku z otlanda xD
to przecież macie już monarchię, tekanię itp.
@LordCompi ; znasz się dobrze na RE? nie dałbyś rady wprowadzić tych zmian w kradzionym serwerze?
- żeby się nie dało wchodzić na więcej niż dwa parcele/skrzynki jak na 7.4
- żeby się nie dało ropować na zaśmieconym ropespocie
- żebyś na stacku uhał osobę z góry stacka, a nie siebie (uhtrap)
z tego, co patrzyłem, to pozostałe zmiany związane z downgradem z 7.7 na ~7.4 nie powinny sprawić większych problemów, część można ogarnąć w plikach edytowalnych, lub w binarce ale poprzez zwykłą podmianę wartości, serwer był kompilowany w debug mode więc funkcje i większość zmiennych mają oryginalne nazwy, więc stosunkowo łatwo dojść co jest do czego
tylko w tych trzech trzeba by ingerować w kod
gdyby się to ogarnęło to będzie real serwerek 7.4 praktycznie 100% jak cipsoftowy
oczywiście stary (2006 rok) i z chujową optymalizacją i dość ograniczonym polem do wprowadzania zmian, ale w pełni grywalny i custom content też można dodawać
imo też mogłoby się okazać, że wyjdzie z tym dużo mniej roboty, niż gdyby pisać wszystko od zera na jakimś tfsie, gdzie pewnie i tak nie ogarnie się wszystkich bugów i nigdy tego nie odtworzy
@tibia77 ;
A co z mana systemem? prędkością mlvla? no i najlepiej żeby wyjebać exhaust na czary dla potworów, żeby hunter to był zawodnik a nie jakaś popierdółka #pdk
no i ofc boaty, a raczej npc.
wbrew pozorom takich zmian drobnych pomiędzy 74 a 77 było troche. bo widoczną zmiane czyli grafiki i troche mapki to pewnie idzie ogarnąc raz dwa. bez kombinowania.
@Govinem ;
- potwory nie miały exhausta
- wywalenie pz na boatach to żaden problem, bo mapa jest w pełni edytowalna, NPCe też
- mlvl i mana system to już trzeba w binarce, ale to raczej przez zwykłe podmiany wartości, przykładowo tutaj trzeba zmienić, żeby manafluid dawał mniej many:
+ do tego w plikach NPCów zmienić cenę manasa z 55 na 100gpKod:// disasm -- show blocks -- show stats
void DrinkPotion(long unsigned int CreatureID, struct Object Obj)
{// addr = 0x0808B330 -- defined in 'magic.c' at line 3382
TPlayer* __edx; // r3
int __eax; // r0
struct ObjectType* _v8; // _cfa_fffffff8
intOrPtr _v12; // _cfa_fffffff4
intOrPtr _v16; // _cfa_fffffff0
intOrPtr _v44; // _cfa_ffffffd4
_unknown_ _v52; // _cfa_ffffffcc (outparam)
struct Object* _v56; // _cfa_ffffffc8 (outparam)
union INSTANCEATTRIBUTE _v60; // _cfa_ffffffc4 (outparam)
TCreature* _t31; // _t31
void* _t32; // _t32
long unsigned int _t37; // _t37
TCreature* _t40; // _t40
struct Object* _t45; // _t45
_t42 = __edi;
_v12 = __esi;
_t45 = Obj.ObjectID;
_v16 = __ebx;
_v8 = __edi;
_t31 = GetPlayer(CreatureID);
_t40 = _t31;
if(_t31 == L00000000) {
*__esp = "DrinkPotion: Kreatur existiert nicht.\n";
L8:
error();
_t32 = __cxa_allocate_exception(4);
*_t32 = -1;
__cxa_throw(_t32, &_ZTI6RESULT, L00000000);
}
if(Object::exists(_t45) == L00000000) {
*__esp = 135257568;
goto L8;
}
_v56 = _t45;
_t42 = &_v44;
Object::getObjectType( &_v44);
__esp = __esp - 4;
if(ObjectType::getFlag( &_v44, 27) == L00000000) {
*__esp = 135257472;
goto L8;
}
_t37 = Object::getAttribute(_t45, 11);
if(_t37 == 10) {
RefreshMana(_t40, L00000000, L00000000, ComputeDamage(L00000000, L00000000, 100, 50));
} else {
if(_t37 != 11) {
*__esp = 135257408;
goto L8;
}
Heal(_t40, L00000000, L00000000, ComputeDamage(L00000000, L00000000, 50, 25));
}
*__esp = _t42;
_v56 = L00000000;
_v60 = 11;
_v44 = _t45->ObjectID;
Change();
}
z kolei wandy wystarczy edytować w pliku z itemami
zmienić na:Kod:TypeID = 3069
Name = "a volcanic rod"
Description = "It erupts powerful bursts of magma upon everything in your path"
Flags = {RestrictLevel,RestrictProfession,Take,Light,Wand}
Attributes = {MinimumLevel=19,Professions=16,Weight=2900,Brightness=2,LightColor=199,WandRange=3,WandManaConsumption=5,WandAttackStrength=30,WandAttackVariation=7,WandDamageType=4,WandMissile=4}
+ poprawić wtedy loot w potworach i wyjebać u NPCów w magic shopachKod:TypeID = 3069
Name = "wand of might"
Flags = {Take}
Attributes = {Weight=2900}
z tego typu rzeczami nie powinno być problemu, właśnie najgorzej z tym uhtrapem, ropowaniem i parcelami
jeszcze teraz mi przyszło do głowy, że kiedyś potwory się nie ruszały, jak nie byłeś na ich piętrze, ale tutaj to trzeba by ustalić, jak jest lepiej
z tego, co pamiętam, to na medivii zmienili, że się ruszają, bo niby za łatwo się stairhoppowało, tyle że wtedy mieli tam zbugowany atak i jak się skakało, to potwory nie waliły spelli
ja pamiętam z real tibii, że jak się nie ruszały, to można było się łatwo wyłożyć, jak coś było zlurowane pod dziurę, bo od razu dostawałeś buta, a przy stairhoppowaniu to akurat było utrudnienie
rope place to se możesz napisać jako skrypt w 5 linijkach i chuj
:hmm @moth ;
edit: aha, dobra, właśnie się skapnąłem, że ropowanie jest w pliku ze skryptami, a nie w binarce
więc trzeba by dać dodatkowy warunek i tyleKod:BEGIN "Roping"
MultiUse, IsType (Obj1,3003), IsType (Obj2,386) -> MoveRel(User,Obj2,[0,1,-1])
MultiUse, IsType (Obj1,3003), IsType (Obj2,293) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,294) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,369) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,370) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,385) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,394) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,411) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,412) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,421) -> MoveRel(User,Obj2,[0,1,-1])
MultiUse, IsType (Obj1,3003), IsType (Obj2,432) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,433) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,435) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,482) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,5081) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,483) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,594) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,595) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,607) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,609) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,610) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,615) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,1066) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,1067) -> Retrieve(Obj2,[0,0,1],[0,1,0])
MultiUse, IsType (Obj1,3003), IsType (Obj2,1080) -> Retrieve(Obj2,[0,0,1],[0,1,0])
END
edit2: chociaż dziury nie mają takiego warunku, a nie dało się rozkopywać, jak coś na nich leżało, więc prawdopodobnie jednak w binarce jest to, że przy użyciu liny na kratce z ropespotem ignoruje itemy
podejrzewam, że odpowiada za to flaga RopeSpot tutaj, więc wystarczyłoby ją wyjebać i git
Kod:TypeID = 386
Name = "dirt floor"
Description = "There is a hole in the ceiling"
Flags = {Bank,UseEvent,ForceUse,Unmove,RopeSpot}
Attributes = {Waypoints=120}