SHM 1.2, rejestracja bohatera w kilku języ...
ogieR8
23.01.2015
~ Siema. Bawię się od pewnego czasu SuperHERO Mod'em 1.20. Silnik zbliżony do idei nowego CoD'a, czy Diablo Core, a dokładniej w oddzielnych pluginach mamy super bohaterów. W głównym silniku SHM zrobiłem już language menu, nie używałem data/lang tylko np.
client_print(id, 3, gPolski[id] ? "Opis po PL" : "Opis pod EB");
Nie znam się na tej bardziej skomplikowanej metodzie lang'a, więc zrobiłem tak, bo i tak 2 języki mi wystarczą. Silnik cały obrobiony, ale.. co zrobić z klasami ? Tak to wygląda w plugin_init
sh_set_hero_info(gHeroID, "Master of Magnetism", "Strip and Get a players guns when they shoot you")
Jest to przykład bohatera Magneto.
1 param = ID bohatera
2 param = krótki opis bohatera przy wyborze (w menu)
3 param = dłuższy opis bohatera, wyświetlany w chwili wybrania bohatera
Zrobiłem natywy w wszystkich bohaterach, aby pobrać wartość gPolski, ale.. to jest w plugin_init, tam nie ma index'u. Zwykła pętla pomoże ? Bo w sumie jeśli to w pętli zrobie to nie wiem, czy nie zarejestruje mi się klasa 32 razy.. No i w sumie plugin_init włącza się od razu, i czy natywy są wczytywane przed init'em ?
Tak wygląda forward w silniku odnośnie informacji o bohaterze.
public _sh_set_hero_info() { new heroIndex = get_param(1) if ( heroIndex < 0 || heroIndex >= gSuperHeroCount ) return new pPower[50], pHelp[128] get_string(2, pPower, charsmax(pPower)) //Short Power Description get_string(3, pHelp, charsmax(pHelp)) //Help Info debugMsg(0, 3, "Create Hero-> HeroID: %d - %s - %s", heroIndex, pPower, pHelp) copy(gSuperHeros[heroIndex][superpower], 49, pPower) copy(gSuperHeros[heroIndex][help], 127, pHelp) }
sebul
23.01.2015
Rivit
23.01.2015
new opis[64], name[64]; if(gPolski[id]) { formatex(opis, charsmax(opis), "po polsku opis"); formatex(name, charsmax(name), "po polsku nazwa"); } else { formatex(opis, charsmax(opis), "po ang opis"); formatex(name, charsmax(name), "po ang nazwa"); } sh_set_hero_info(gHeroID, nazwa, opis)
Sprawdz
ogieR8
23.01.2015
Ale to jest w plugin_init, cztli pętli użyć, aby można działać na indexach ?
Rivit
23.01.2015
Niedoczytałem
To moze dodaj 2 parametry do rejestracji i tam gdzie uzywasz gPolski to sobie pobierasz odpowiedni tekst z tablicy
ogieR8
23.01.2015
W silniku zmienione na:
public _sh_set_hero_info() { new heroIndex = get_param(1) if ( heroIndex < 0 || heroIndex >= gSuperHeroCount ) return new pPower[50], pHelp[128] for(new i = 1; i <= 32; i++) { if(gJezykGracza[i]) { get_string(4, pPower, charsmax(pPower)) get_string(5, pHelp, charsmax(pHelp)) } else { get_string(2, pPower, charsmax(pPower)) get_string(3, pHelp, charsmax(pHelp)) } } debugMsg(0, 3, "Stworzenie bohatera -> ID: %d, NAME: %s, HELP: %s", heroIndex, pPower, pHelp) copy(gSuperHeros[heroIndex][superpower], 49, pPower) copy(gSuperHeros[heroIndex][help], 127, pHelp) }
W klasie:
sh_set_hero_info(gHeroID, "Master of Magnetism", "Strip and Get a players guns when they shoot you", "Mistrz magnetyzmu", "Przeciwnik traci bron, a Ty ja dostaniesz.. kiedy w Ciebie strzeli")
Niestety, obydwa pliki zaaktualizowane na serwerze jednak nie działa. Zawsze 'nazwa' jest po ang, a opis się chyba czasem nie pojawia jak dobrze widzę, jeśli język = EN - działa zawsze. Nie bawiłem się tak nigdy, pewnie zrobiłem znając życie głupie błędy, jakaś rada ?
wooDy.
23.01.2015
Stwórz dwie klasy / zmieniaj nazwę tam gdzie się wyświetla w zależności od języku( to bym wybrał ).
ogieR8
23.01.2015
Odpada. Silnik SHM 1.2 uciągnie 100 bohaterów, znalazłem ich 500+, część niedziałała, część bezsensowna, ale i tak siedzę nad 140 teraz i myślę co do odrzutu A zejście do 50 to już wogóle.
Rivit
23.01.2015
W silniku zmienione na:
public _sh_set_hero_info() { new heroIndex = get_param(1) if ( heroIndex < 0 || heroIndex >= gSuperHeroCount ) return new pPower[50], pHelp[128] for(new i = 1; i <= 32; i++) { if(gJezykGracza[i]) { get_string(4, pPower, charsmax(pPower)) get_string(5, pHelp, charsmax(pHelp)) } else { get_string(2, pPower, charsmax(pPower)) get_string(3, pHelp, charsmax(pHelp)) } } debugMsg(0, 3, "Stworzenie bohatera -> ID: %d, NAME: %s, HELP: %s", heroIndex, pPower, pHelp) copy(gSuperHeros[heroIndex][superpower], 49, pPower) copy(gSuperHeros[heroIndex][help], 127, pHelp) }W klasie:
sh_set_hero_info(gHeroID, "Master of Magnetism", "Strip and Get a players guns when they shoot you", "Mistrz magnetyzmu", "Przeciwnik traci bron, a Ty ja dostaniesz.. kiedy w Ciebie strzeli")Niestety, obydwa pliki zaaktualizowane na serwerze jednak nie działa. Zawsze 'nazwa' jest po ang, a opis się chyba czasem nie pojawia jak dobrze widzę, jeśli język = EN - działa zawsze. Nie bawiłem się tak nigdy, pewnie zrobiłem znając życie głupie błędy, jakaś rada ?
Nie rób pętli tam, przecież gdy wykonuje sie plugin_init (czyli rejestracja natywu) to nikt nie ma jeszcze polskiego....
Tu zrób tylko pobieranie angielskiego i polskiego (czyli będzie 5 parametrów)
Potem gdzieś w kodzie (tam gdzie wyświetlasz np. opis), dodajesz warunek: jeśli polski to wyświetl mu tekst z tablicy z napisami polskimi, jeśli nie to angielskie
Rozumiesz?
ogieR8
23.01.2015
Teoretycznie raczej tak. kod klasy jest dobry, z silnika wyrzucic warunek jezyka i wrzucic go w momencie wyswietlenia, oraz.. pobrac 2 ostatnie argumenty do oddzielnych zmiennych/tablic.