Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Resetuje classname


Najlepsza odpowiedź sebul, 26.06.2014 17:45

Ja bym zwiększył odległość, bo 20 to jest mało, sam gracz ma wysokość chyba prawie 80, czyli jego położenie jest brane z wysokości 40, a wtedy jeśli coś "leży na ziemi", to tego nie wykryjesz. Przejdź do postu


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 26.06.2014 13:09

Dokładnie, resetuje classname, a dokładniej gdy postawię wieżyczkę, wszystko jest OK, lecz gdy ją ulepsze, to nie znajduje jej nigdzie.

 

Kod ulepszania:

public menuUpgradeTurretPost(szData[], iTask) {    
    new id = szData[0]
    new item = szData[1] // 0 - obrażenia | 1 - zasięg
    new sentry = szData[2]
    
    remove_task(iTask - id)
    
    if(item == 0) {
        ColorChat(id, GREEN, "%s^x01 Twoja wiezyczka zadaje teraz od^x04 %d^x01 do^x04 %d^x01 obrazen!", gszPrefix, gTurretsDamageData[e_TurretsType:entity_get_int(gPlayerTurretEnt[id][sentry], EV_INT_turret_type)][gPlayerTurretDamageLevel[id][sentry]][0], gTurretsDamageData[e_TurretsType:entity_get_int(gPlayerTurretEnt[id][sentry], EV_INT_turret_type)][gPlayerTurretDamageLevel[id][sentry]][1])
    } else if(item == 1) {
        ColorChat(id, GREEN, "%s^x01 Twoja wiezyczka ma zasieg teraz^x04 %d jednostek!", gszPrefix, gTurretsRangeData[ e_TurretsType:entity_get_int(gPlayerTurretEnt[id][sentry], EV_INT_turret_type) ][ gPlayerTurretRangeLevel[id][sentry] ])        
    }
    
    new iPrevLvl = gPlayerTurretLevel[id][sentry]
    gPlayerTurretLevel[id][sentry] = floatround((gPlayerTurretDamageLevel[id][sentry] + gPlayerTurretRangeLevel[id][sentry] +1) / 2.0, floatround_ceil)

    if(iPrevLvl != gPlayerTurretLevel[id][sentry]) {
        ColorChat(id, GREEN, "%s^x01 Twoja wiezyczka ma teraz^x03 poziom %d!", gszPrefix, gPlayerTurretLevel[id][sentry])
    }

    new szModel[64];
    formatex(szModel, 63, "models/TD/sentrygun_%d.mdl", gPlayerTurretLevel[id][sentry])
    
    entity_set_model(gPlayerTurretEnt[id][sentry], szModel)
    
    entity_get_string(gPlayerTurretEnt[id][sentry], EV_SZ_classname, szModel, 63)
    client_print(0,3, "clas %s |wiez %d |gracz %d", szModel, sentry, id)
    menuUpgradeTurret(id, sentry)
}

I tutaj wszystko jest ok, ponieważ po ulepszeniu wypisuje

class turret |wiez 0 |gracz 1

czyli bardzo dobrze, klasy nie zmienia, id wiezyczki dobre, gracz tez dobry, jednak przy wypisywaniu nie znajduje jej, kod:

if(is_user_alive(id)) {
        if(get_gametime() > gfPlayerHudGameTime[id] + 1.0) {
            if(td_is_turret_on_server()) {
                new iEntList[3],  iNum
                new szModel[54]
                iNum = find_sphere_class(id, "turret", 20.0, iEntList, 2)
                if(iNum) {
                    entity_get_string(iEntList[0], EV_SZ_classname, szModel,44)
                    client_print(0,3, "clas %s |wiez %d |gracz %d", szModel, entity_get_int(iEntList[0], EV_INT_turret_id), id)
                    
                    new szText[75];
                    new szTemp[33];
                    new iOwner = entity_get_edict(iEntList[0], EV_ENT_turret_owner)
                    get_user_name(iOwner, szTemp, charsmax(szTemp))
                    
                    formatex(szText, charsmax(szText), "Typ Wiezyczki: %s^nWiezyczka gracza: %s", gszTurretsName[e_TurretsType:entity_get_int(iEntList[0], EV_INT_turret_type)], szTemp)
                    
                    if(iOwner  ==id  && gCvarValue[TURRET_SHOW_AMMO] == 1)
                        formatex(szTemp, charsmax(szTemp), "^nAmunicja: %d",  gPlayerTurretAmmo[id][entity_get_int(iEntList[0], EV_INT_turret_id)])
                    else if(gCvarValue[TURRET_SHOW_AMMO] == 2)
                        formatex(szTemp, charsmax(szTemp), "^nAmunicja: %d",  gPlayerTurretAmmo[iOwner][entity_get_int(iEntList[0], EV_INT_turret_id)])
        
                    if(gCvarValue[TURRET_SHOW_AMMO] != 0)
                        add(szText, charsmax(szText), szTemp)
                    
                    set_hudmessage(212, 255, 255, -1.0, 0.85, 0, 6.0, 1.1)
                    ShowSyncHudMsg(id, gHudMessage, szText);
    
                    gfPlayerHudGameTime[id] = get_gametime();
                }
            }
        }

jest to w funkcji client_PostThink(id), więc przed ulepszeniem pokazuje nazwe wiezyczki, typ, ammo itd.. ( Oraz to, client_print(0,3, "class ..." )" bezbłędnie. Po ulepszeniu, nie dochodzi nawet wtedy, a co najlepsze iNum == 0.

Może coś źlę robię ?

 

ps. td_is_turret_on_server() działa prawidlowo, oraz próbowałem wyszukiwać nie przy ID ale przy origin = to samo


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 26.06.2014 17:45   Najlepsza odpowiedź

Ja bym zwiększył odległość, bo 20 to jest mało, sam gracz ma wysokość chyba prawie 80, czyli jego położenie jest brane z wysokości 40, a wtedy jeśli coś "leży na ziemi", to tego nie wykryjesz.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#3 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 26.06.2014 17:52

Super :) Działa, dzięki!

 

Faktycznie, gdy wyszukiwało wieżyczkę ( PO ULEPSZENIU) była ona 'jakimś prawem' 45 unitów nad graczem ^^ Nie wiem dlaczego, kombinowałem ,wszystko, ale nie wychodziło ; D Do zamknięcia! ;]


Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych