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