←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

SuperHeroMod
SHM 1.2, rejestracja bohatera w kilku języ...

  • +
  • -
ogieR8 - zdjęcie 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)
}
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 23.01.2015

Automatyczna wiadomość


Ten temat został przeniesiony z forum

AMX Mod X > Pytania

do

Mody > Inne mody > Pytania
Odpowiedz

  • +
  • -
Rivit - zdjęcie 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 :D

Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 23.01.2015

Ale to jest w plugin_init, cztli pętli użyć, aby można działać na indexach ?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 23.01.2015

Niedoczytałem :X

 

 

 

To moze dodaj 2 parametry do rejestracji i tam gdzie uzywasz gPolski to sobie pobierasz odpowiedni tekst z tablicy

Odpowiedz

  • +
  • -
ogieR8 - zdjęcie 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 ?

Odpowiedz

  • +
  • -
wooDy. - zdjęcie 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ł ;) ).

Odpowiedz

  • +
  • -
ogieR8 - zdjęcie 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.

Odpowiedz

  • +
  • -
Rivit - zdjęcie 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?

Odpowiedz

  • +
  • -
ogieR8 - zdjęcie 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.

Odpowiedz