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
Modyfikacja

Drobna zmiana w SuperHero Mod

Modyfikacja

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

#1 SzyjaN

    Zaawansowany

  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 11.06.2012 14:21

Witam. Przerabiam lekko pod swoje wymogi zagraniczny mod - superhero, jednak w jednym miejscu napotkałem mały problem. Dotyczy on usunięcia jednej części ze zdania, które wyświetla się po dodaniu komuś XP przez admina, lub też po kupieniu XP za pomocą komendy.

new xp = str_to_num(arg2)

new cmd[32], arg[32]
new bool:giveXP = false
read_argv(0, cmd, charsmax(cmd))
read_argv(1, arg, charsmax(arg))

if ( equali(cmd, "amx_shaddxp") ) giveXP = true

new name2[32], authid2[32]
get_user_name(id, name2, charsmax(name2))
get_user_authid(id, authid2, charsmax(authid2))

if ( arg[0] == '@' ) {
new players[32], inum
if ( equali("T", arg[1]) ) {
copy(arg[1], charsmax(arg)-1, "TERRORIST")
}

if ( equali("ALL", arg[1]) ) {
get_players(players, inum)
}
else {
get_players(players, inum, "eg", arg[1])
}

if ( !inum ) {
console_print(id, "No clients in such team")
return PLUGIN_HANDLED
}

new user
for ( new a = 0; a < inum; a++ ) {
user = players[a]
if ( giveXP ) localAddXP(user, xp)
else gPlayerXP[user] = xp
displayPowers(user, false)
}

show_activity(id, name2, "%s %d XP graczowi %s", giveXP ? "dodal" : "set", xp, arg[1])

console_print(id, "[SH] %s %d XP on %s players", giveXP ? "Added" : "Set", xp, arg[1])

log_amx("[SH] ^"%s<%d><%s><>^" %s %d XP graczowi %s", name2, get_user_userid(id), authid2, giveXP ? "added" : "set", xp, arg[1])
}
else {
new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
if ( !player ) return PLUGIN_HANDLED

if ( giveXP ) localAddXP(player, xp)
else gPlayerXP[player] = xp
displayPowers(player, false)

new name[32], authid[32]
get_user_name(player, name, charsmax(name))
get_user_authid(player, authid, charsmax(authid))

show_activity(id, name2, "%s %d XP graczowi %s", giveXP ? "dodal" : "set", xp, name)

console_print(id, "[SH] Client ^"%s^" has been %s %d XP", name, giveXP ? "given" : "set to", xp)

log_amx("[SH] ^"%s<%d><%s><>^" %s %d XP on ^"%s<%d><%s><>^"", name2, get_user_userid(id), authid2, giveXP ? "added" : "set", xp, name, get_user_userid(player), authid)
}

return PLUGIN_HANDLED
}


Konkretnie chodzi mi o tą linię:
show_activity(id, name2, "%s %d XP graczowi %s", giveXP ? "dodal" : "set", xp, arg[1])
Chciałbym usunąć z niej pierwszą część, tj. "id", gdyż po prostu paskudnie to wygląda, gdy w chacie wyświetla się wiadomość typu "GRACZ nazwa serwera dodał graczowi xxxx XP"
Niestety, samo skasowanie powoduje błąd przy kompilacji "argument type mismatch <argument 1>"
Proszę więc o pomoc, najlepiej w postaci wyjaśnienia, jak sobie z takim problemem poradzić.

Użytkownik *Szyjanq* edytował ten post 11.06.2012 14:22

  • +
  • -
  • 0

#2 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 11.06.2012 19:06

W funkcji show_activity pierwszym argumentem jest id gracza, więc nie możesz go pominąć. Wówczas debugger za pierwszy argument bierze nick gracza (string), a powinno nim być id gracza (typ integer).
Stąd komunikat o niezgodności typów argumentów. Nie powinieneś (a w tym wypadku nie możesz) stosować funkcji inaczej, niż stanowi dokumentacja.

edit. W podanej przez Ciebie linijce nie może zostać wygenerowany tekst "GRACZ nazwa serwera dodał graczowi xxxx XP"
Zamiast name2 jako drugi argument, wstaw inny, wybrany nick, lub pozostaw pole puste. Wtedy nazwa serwera zostanie zastąpiona innym nickiem, bądź pominięta.

#3 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 11.06.2012 19:19

Dołączona grafika

Nie wiem czy nie może, skoro jednak to robi

Skoro ta funkcja nie może obyć się bez 'id', to czy mogę ją zastąpić jakąś inną, z którą nie będzie tego problemu?
  • +
  • -
  • 0

#4 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 11.06.2012 19:22

No nie wiedzę tutaj formy "GRACZ nazwa serwera dodał graczowi xxxx XP".

#5 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 11.06.2012 19:27

Cytuję ze screena: GRACZ DancingDead @ NetShoot.pl added 100 XP on snieg
Opis cytatu:
GRACZ - ...
DancingDead @ NetShoot.pl - nazwa serwera
snieg - nick gracza, który otrzymał XP
  • +
  • -
  • 0

#6 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 11.06.2012 19:51

"GRACZ @ nazwa serwera dodał xxx XP graczowi GRACZ2"

Tak nazwałbym tę formę, ale wracając do tematu: może zwykły say wystarczy?
Np.:
client_print(id, print_chat, "%s %s %d XP", arg[1], giveXP ? "otrzymal" : "ma teraz", xp)


#7 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 11.06.2012 21:19

Pomysł działa, ale teraz zrobił mi kolejne niespodzianki:
Załóżmy, że gracz ma nick "Crimus". Przy wpisaniu komendy dodającej XP w chacie pokazuje się:
rimus otrzymal xxxx XP
Usuwa pierwszą literę z nicku - testowane na 5ciu różnych, na każdym to samo
Do tego - przy użyciu komendy buyxp, zamiast nicku pojawiło się STEAM_ID
  • +
  • -
  • 0

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 11.06.2012 21:27

Podaj pełne sma, bo buyxp nie widzę.
Jeśli Ci obcina pierwszą literę, to użyj po prostu arg, zamiast arg[1].

#9 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 11.06.2012 21:36

superheronvault - główny od superhero
sh_merchant - tu jest funkcja buyxp
Myślałem tez, czy nie byłoby lepiej przenieść tą wiadomość z chata od razu do pluginu sh_menchart (obecnie wykorzystuje główny plugin)

Załączone pliki


Użytkownik SzyjaN edytował ten post 11.06.2012 21:38

  • +
  • -
  • 0

#10 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 14.06.2012 22:48

@@Refresh
  • +
  • -
  • 0

#11 SzyjaN

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 31
Życzliwy

  • Postów:131
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 15.06.2012 11:34

Dobra, już sobie poradziłem i wszystko działa tak, jak powinno. Temat można zamknąć ;)
  • +
  • -
  • 0

#12 Goliath

    Godlike

  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 15.06.2012 15:53

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

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

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