←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Losowe nazwy teamów

MarvV - zdjęcie MarvV 01.05.2013

Witam.

Posiadam plugin SoccerJam by Miczu i mam problem, a mianowicie chciałbym zrobić tak, aby wybierało losową nazwę dla CT i dla TT co mape. Np. byłyby po 3 do wyboru dla każdej z drużyn i między nimi by wybierało.

Myślę, że coś trzeba zrobić z tą linjką 96-101:



static const TeamNames[TEAMS][] = {
	"NULL",
	"Terr",	//Terrorist Team
	"CT",	//CT Team
	"NULL"
}

Proszę o pomoc w rozwiązaniu problemu. Załączam plik sma

 

Załączone pliki

  • Załączony plik  sj.sma   80,6 KB   27 Ilość pobrań
Odpowiedz

GT Team - zdjęcie GT Team 01.05.2013

CT i dla TT co mape

 

Nick ?

Odpowiedz

MarvV - zdjęcie MarvV 01.05.2013

Tutaj chodzi o nazwy teamów wyświetlane w HUD, aby były losowe

 

Dla przykładu:

http://img842.images...rjam0000kd8.jpg

Odpowiedz

GT Team - zdjęcie GT Team 01.05.2013

no to zmieniasz tutaj:

static const TeamNames[TEAMS][] = {
    "NULL",
    "Terr",    //Terrorist Team
    "CT",    //CT Team
    "NULL"
}
 

 

Ale jescze jedno pytanie. Jak losowe ? Chodzi Ci o drużyny ?

Odpowiedz

MarvV - zdjęcie MarvV 01.05.2013

Tak, o ich nazwy.

Jak np. jest napisane "Terr", to chciałbym, aby były 3 do wyboru tj. Terr1, Terr2, Terr3 i losowałoby jedną z nazw, która potem zostałaby wyświetlana.

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 04.05.2013

Najprościej:
  • zmieniasz z:
    static const TeamNames[TEAMS][] = {
        "NULL",
        "Terr",    //Terrorist Team
        "CT",    //CT Team
        "NULL"
    }
    na:
    new TeamNames[TEAMS][MAX_TEAM_LEN] = {
        "NULL",
        "Terr",    //Terrorist Team
        "CT",    //CT Team
        "NULL"
    }
  • dodajesz przed powyższym:
    #define MAX_TEAM_LEN 64
    #define TEAM_NAMES_AMT 3
    static const CtTeamNames[TEAM_NAMES_AMT][MAX_TEAM_LEN] = {
        "Manchester United",
        "Wisla Krakow",
        "Chelsea Londyn"
    }
    
    static const TtTeamNames[TEAM_NAMES_AMT][MAX_TEAM_LEN] = {
        "Legia Warszawa",
        "Real Madryt",
        "Borussia Dortmund"
    }
  • Dodajesz w plugin_init lub w plugin_cfg (lepiej w tym 2gim):
    copy(CtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[2], MAX_TEAM_LEN-1)
    copy(TtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[1], MAX_TEAM_LEN-1)

Użytkownik GwynBleidD edytował ten post 04.05.2013 00:02
Odpowiedz

MarvV - zdjęcie MarvV 04.05.2013

GwynBleidD, zrobiłem tak jak mi napisałeś jednak podczas kompilacji wyskakuje mi błąd odnośnie argumentu 2 w tej funkcji:

copy(CtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[2], MAX_TEAM_LEN-1)
copy(TtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[1], MAX_TEAM_LEN-1) 

Błąd:

sj.sma(804) : error 035: argument type mismatch (argument 2)
sj.sma(805) : warning 217: loose indentation
sj.sma(805) : error 035: argument type mismatch (argument 2)
sj.sma(806) : warning 217: loose indentation
Odpowiedz

GT Team - zdjęcie GT Team 04.05.2013

pomylił się. zamień
copy(CtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[2], MAX_TEAM_LEN-1)
copy(TtTeamNames[random(TEAM_NAMES_AMT)], TeamNames[1], MAX_TEAM_LEN-1)
na
copy(CtTeamNames[random(TEAM_NAMES_AMT)], MAX_TEAM_LEN-1, TeamNames[2])
copy(TtTeamNames[random(TEAM_NAMES_AMT)], MAX_TEAM_LEN-1, TeamNames[1])
Odpowiedz

MarvV - zdjęcie MarvV 04.05.2013

Wpisałem wszystko tak jak należy, jednak nadal w HUD wyświetla mi: Terr oraz CT... W czym problem ?

Odpowiedz

GT Team - zdjęcie GT Team 04.05.2013

zamień
format(scoreboard,1024,"   %i %L^n%s - %i  |  %s - %i ^n%L %i ^n^n%s^n^n^n%s",get_pcvar_num(CVAR_SCORE),id,"GOALS_WINS",TeamNames[T],score_t,TeamNames[CT],score_ct,id,"EXPERIENCE",g_Experience[id],temp1,team==bteam?temp2:"")
na
format(scoreboard,1024,"   %i %L^n%s - %i  |  %s - %i ^n%L %i ^n^n%s^n^n^n%s",get_pcvar_num(CVAR_SCORE),id,"GOALS_WINS",TtTeamNames[random(TEAM_NAMES_AMT)],score_t,copy(CtTeamNames[random(TEAM_NAMES_AMT)],score_ct,id,"EXPERIENCE",g_Experience[id],temp1,team==bteam?temp2:"")
Odpowiedz

MarvV - zdjęcie MarvV 04.05.2013

Gdy tak ustawiłem, to wszystko mi zaczęło mrygać w HUDZIE tj. nazwy drużyn zmieniają się co sekundę

Poczekam na GwynBleidD'a może coś poradzi.

 

Odpowiedz

GT Team - zdjęcie GT Team 04.05.2013

aaaaa juz wiem :P Zignrouj tzn przywróć to co Ci napisałem i zamiast
copy(CtTeamNames[random(TEAM_NAMES_AMT)], MAX_TEAM_LEN-1, TeamNames[2])
copy(TtTeamNames[random(TEAM_NAMES_AMT)], MAX_TEAM_LEN-1, TeamNames[1])
daj
copy(TeamNames[2], MAX_TEAM_LEN-1, CtTeamNames[random(TEAM_NAMES_AMT)])
copy(TeamNames[1], MAX_TEAM_LEN-1, TtTeamNames[random(TEAM_NAMES_AMT)])
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 05.05.2013

Pomieszała mi się kolejność argumentów w copy. tak to już jest, jak się pisze o 1 w nocy. Kolega wyżej podał Ci poprawną.

Odpowiedz

MarvV - zdjęcie MarvV 05.05.2013

Tak widzę, dziękuję :)

Mam jeszcze jedno pytanie, czy dałoby się zrobić tak, aby każda drużyna miała odpowiedni model ?

Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 05.05.2013

Tak.
Odpowiedz

MarvV - zdjęcie MarvV 05.05.2013

K!113r, mógłbyś mi napisać na PW jak miałoby to wyglądać ? :)

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 05.05.2013

Po co na PW?

 

Najpierw musisz stworzyć modele. Jeśli mają one być przypisane do konkretnej nazwy drużyny (czyli również losowane przy wczytywaniu mapy), trzeba będzie przenieść losowanie do plugin_precache. Tam w zależności od wylosowanych teamów zrobić precache odpowiedniego modelu i następnie przy spawnie gracza za pomocą cs_set_user_model ustawić każdemu odpowiedni model w zależności od drużyny.

Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 05.05.2013

Jeżeli dla każdej oddzielnej drużyny ma być oddzielny model (czyt. jeżeli więcej jak 2 modele) to polecam użyć submodeli, a jeżeli się da to skinów, zaoszczędzisz na transferze fastdownload i gracze szybciej pobiorą modele :).

Odpowiedz

MarvV - zdjęcie MarvV 05.05.2013

Chodzi mi o to, żeby każdy z wylosowanych zespołów miał oddzielny model ( jeden model :) )

Tylko chciałbym wiedzieć jak taka funkcja miałaby wyglądać :)

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 05.05.2013

  • Dodaj pod kodem z #2 następujący kod:
    #define MAX_TMODELS_LEN 32
    static const CtTeamModels[TEAM_NAMES_AMT][MAX_TMODELS_LEN] = {
        "CtPilkarz",
        "CtPilkarz",
        "CtPilkarz"
    };
    
    static const CtTeamSubModels[TEAM_NAMES_AMT] = {
        0,
        1,
        2
    };
    
    static const TtTeamModels[TEAM_NAMES_AMT][MAX_TMODELS_LEN] = {
        "TtPilkarz",
        "TtPilkarz",
        "TtPilkarz"
    };
    
    static const TtTeamSubModels[TEAM_NAMES_AMT] = {
        0,
        1,
        2
    };
    new CtTeamChoice, TtTeamChoice;
  • Zamień:
    copy(TeamNames[2], MAX_TEAM_LEN-1, CtTeamNames[random(TEAM_NAMES_AMT)])
    copy(TeamNames[1], MAX_TEAM_LEN-1, TtTeamNames[random(TEAM_NAMES_AMT)])
    na:
    CtTeamChoice = random(TEAM_NAMES_AMT);
    TtTeamChoice = random(TEAM_NAMES_AMT);
    copy(TeamNames[2], MAX_TEAM_LEN-1, CtTeamNames[CtTeamChoice])
    copy(TeamNames[1], MAX_TEAM_LEN-1, TtTeamNames[TtTeamChoice])
    new temp[128];
    formatex(temp, 127, "models/player/%s/%s.mdl", CtTeamModels[CtTeamChoice], CtTeamModels[CtTeamChoice])
    precache_model(temp);
    formatex(temp, 127, "models/player/%s/%s.mdl", TtTeamModels[TtTeamChoice], TtTeamModels[TtTeamChoice])
    precache_model(temp);
    I przenieś ten kod do plugin_precache
  • Przy spawnie gracza dodaj:
    new CsTeams:team = cs_get_user_team(id)
    if(team==CS_TEAM_CT) {
        cs_set_user_model(id, CtTeamModels[CtTeamChoice]
        set_pev(id, pev_body, CtTeamSubModels[CtTeamChoice]
    } else if (team==CS_TEAM_T) {
        cs_set_user_model(id, TtTeamModels[TtTeamChoice]
        set_pev(id, pev_body, TtTeamSubModels[TtTeamChoice]
    }
    
Sposób ten umożliwia używanie zarówno submodeli, jak i modeli w osobnych plikach. Gwarantuje też, że zawsze graczowi zostaną pobrane tylko potrzebne na danej mapie modele. Przykład wyżej podany używa submodeli. Możesz użyć modeli w osobnych plikach, poprzez przypisanie submodeli na 0, a jako modele wpisać odpowiednie nazwy plików. Pamiętaj, że w tablicy modeli podajesz tylko nazwę pliku, bez .mdl i bez katalogu!
Użytkownik GwynBleidD edytował ten post 05.05.2013 20:03
Odpowiedz