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

Podmiana modeli graczy na serwerze.


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

#1 Ox!d3

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:16
Offline

Napisano 20.11.2008 20:28

Witam

Próbuję z kumplem napisać plugin na potrzeby naszego klanu, który będzie podmieniał model gracza w CT lub TT ale tylko osobom, których steam_id będzie się zgadzało z tym, które będzie podane w pliku źródłowym. Konkretny model przypisany do gracza o danym steam_id ma być widoczny dla wszystkich graczy wbijających na serwer bez względu na to jaki model CT lub TT wybiorą. Należy także uwzględnić widoczność podmienionych modeli po użyciu w grze komendy cl_minmodels 1.

Proszę o poprawne zmodyfikowanie kodu, który udało nam się napisać do tej pory:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX LaResistance Model", "1.0", "siC")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
}

public plugin_precache() {
        precache_model("models/player/lars_ct/gracz1_ct.mdl")
        precache_model("models/player/lars_te/gracz1_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
	new CsTeams:userTeam = cs_get_user_team(id)
	
	// Pobranie userid graczy z serwera
	new userid = get_user_userid(32)
	
		if (userTeam == CS_TEAM_T) {
			// Chcemy dla unikalnego steamid zmienić model gracza, w tym przypadku dla 5 osób drużyny, każdy gracz ma własny model
			// Zwraca błąd error 033: array must be indexed (variable "-unknown-")
			if (userid == "STEAM_x:x:xxxxxxx") {
				cs_set_user_model(id, "gracz1_te")
			}
		}
		else if(userTeam == CS_TEAM_CT) {
			// Chcemy dla unikalnego steamid zmienić model gracza, w tym przypadku dla 5 osób drużyny, każdy gracz ma własny model
			// Zwraca błąd error 033: array must be indexed (variable "-unknown-")
			if (userid == "STEAM_x:x:xxxxxxx") {
				cs_set_user_model(id, "gracz1_ct")
			}
		}
		else {
			cs_reset_user_model(id)
		}

	return PLUGIN_CONTINUE
}

Jeśli nie sprawi to kłopotu, to prosiłbym także o napisanie 2 wersji tego pluginu, w której będzie można wpisać steam_id graczy, których model ma zostać podmieniony, w osobnym pliku o nazwie np. sidmodels.ini, umieszczonym w lokalizacji cstrikeaddons/amxmodx/configs.
  • +
  • -
  • 0

#2 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 20.11.2008 20:49

pierwsza zasada
if(userid == "STEAM_x:x:xxxxxxx")

Sprawdza się to inaczej poprzez contain, albo equal. contain sprawdza czy tablica zawiera jakis ciag znakow a equali porównuje 2 stringi do siebie i zwraca 1(true) jeżeli są takie same

new userid = get_user_userid(32)

tutaj najlepiej użyć get_players() i pętli for, znajde potem chwile to pokaże jak
  • +
  • -
  • 0

#3 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 21:13

Z całym szacunkiem darkman, ale ciężko się przesiąść w ciągu 1 dnia z innego języka na ten. Próbowałem, ale zbyt wiele niewiadomych dla mnie. Między innymi nie wiem jak definiować całe ciągi string...
$str = "ciag";
np.. dla mnie to coś w stylu
new str = "ciag"
. Mógłbyś nam to napisać? wiem, że to banalne jednak potrzebne są podtsawy do tego , których ja niestety nie mam :)
  • +
  • -
  • 0

#4 choyrack

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:369
  • GG:
  • Lokalizacja:Wrocław
Offline

Napisano 20.11.2008 21:30

siC, PHP bym językiem programowania nie nazwał...

PS. Logiczne myślenie i znajomość funkcji to co innego
  • +
  • -
  • 0

#5 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 20.11.2008 21:35

PHP – obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych

ciągi definiujesz w stylu:
new wyraz [ max_dlugosc ]
format ( wyraz, max_dlugosc-1, "tekst" )
albo
format ( wyraz, max_dlugosc-1, "tekst %d %s", liczba, ciag )
  • +
  • -
  • 0

#6 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 22:07

Pavulon dzięki za wstawkę za mną :)

Ok zaraz pokombinuje z tym i zobaczymy co mi z tego wyjdzie analogicznie do wszystkich wypowiedzi poza choyrack ;)
  • +
  • -
  • 0

#7 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 22:19

Mozna by tez zoptymalizowac to przez uzycie eventa od przylaczenia do teamu

#include <amxmodx> 
#include <amxmisc> 

public plugin_init() 
{ 
    register_event("TeamInfo","team_assign","a") 
} 

public team_assign() 
{ 
    new id = read_data(1) 
    new Team[32] 
    read_data(2,Team,31)    //UNASSIGNED 
                //TERRORIST 
                //CT 
                //SPECTATOR 
}

Zalety: od razu z eventem bedzie przekazywana informacja o teamie gracza, jak sie doda sprawdzenie czy team sie nie zmienil (bo zmienic model trzeba tylko gdy gracz przejdzie z ct do tt chyba [i na odwrot]) to sie zaoszczedzi niepotrzebnego co rudne zmieniania modelu na ten sam ;-)
  • +
  • -
  • 0

#8 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 22:29

Miczu a byłbyś w stanie napisać nam cały taki plugin? Oczywiście w grę wchodziłaby też możliwość zapłaty ;)
  • +
  • -
  • 0

#9 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 20.11.2008 22:30

precache_model("models/player/lars_ct/gracz1_ct.mdl")
        precache_model("models/player/lars_te/gracz1_te.mdl")
a i te modele raczej nie przejdą:
folder (prawdopodobnie) musi mieć taką samą nazwę jaki model, tj:
precache_model("models/player/gracz1_ct/gracz1_ct.mdl")
        precache_model("models/player/gracz1_te/gracz1_te.mdl")

  • +
  • -
  • 0

#10 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 22:33

Tak tak, wiemy, ale niekoniecznie. Tu wchodziłyby nazwy takie jak lars/gign_sic.mdl , lars/leet_sic.mdl i dla każdego gracza takie coś, ale nawet gdyby to tworzyłyby się katalogi, katalog przecież nie zajmuje nic
  • +
  • -
  • 0

#11 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 22:36

siC, jestem w stanie napisac trudniejsze rzeczy ;-)

Ale byl bym draniem gdybym zabral ci projekt w polowie, poza tym nie chce ci odbierac satysfakcji z ogladania efektow pracy pluga ktory samemu sie napisalo ^^
  • +
  • -
  • 0

#12 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 22:38

Jakoś mnie nie bawi i nie satysfakcjonuje pisanie takiego czegoś, mam dość pisania i ogladania już efektów swojej pracy? Wiec jak?
  • +
  • -
  • 0

#13 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 22:45

Niestety nie mam czasu, ale jak bedziesz potrzebowal pomocy i będę na stronce to zawsze popchne w dobrym kierunku O:)
  • +
  • -
  • 0

#14 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 22:56

Miczu, Ubolewam nad tym

Ok, w takim razie wg mojego myslenia zrobiłem dla 1 usera na razie i udało się przekompilować bez błędów, tylko zostaje poprawność tego co wymodziłem :) Zaraz sprawdzimy na serwerze... Macie jakieś pomysły? Ps. Nie wiem jak z tym eventem. Totalnie zielony w scriptingu amxx

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

public plugin_init() {
        register_plugin("AMX LaResistance Model", "1.0", "siC")
        register_event("ResetHUD", "resetModel", "b")
        return PLUGIN_CONTINUE
} 

public plugin_precache() {
        precache_model("models/player/sic_ct/sic_ct.mdl")
        precache_model("models/player/sic_te/sic_te.mdl")

        return PLUGIN_CONTINUE
}

public resetModel(id, level, cid) {
	new CsTeams:userTeam = cs_get_user_team(id)
	
	new Players[32]
	new playerCount, i, player
	get_players(Players, playerCount)
	for (i=0; i<playerCount; i++) {
		
		new sic[18]
		format ( sic, 17, "STEAM_0:1:1111111" ) 
	
		if (userTeam == CS_TEAM_T) {
			if (equali(Players[i], sic)) {
				cs_set_user_model(id, "sic_te")
			}
		}
		
		else if(userTeam == CS_TEAM_CT) {
			if (equali(Players[i], sic)) {
				cs_set_user_model(id, "sic_ct")
			}
		}
		else {
			cs_reset_user_model(id)
		}
	}
		
	return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#15 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 23:04

#include <amxmodx> 

#include <amxmisc> 

#include <cstrike>



public plugin_init() 

{ 

    register_plugin("AMX LaResistance Model", "1.0", "siC")

    register_event("TeamInfo","team_assign","a") 

} 



public plugin_precache() { 

        precache_model("models/player/sic_ct/sic_ct.mdl") 

        precache_model("models/player/sic_te/sic_te.mdl") 



        return PLUGIN_CONTINUE 

}



public team_assign() 

{ 

    static old_team[33] 

    new tid 

    new id = read_data(1) 

    new Team[32] 

    read_data(2,Team,31)    //UNASSIGNED 

                //TERRORIST 

                //CT 

                //SPECTATOR 

    if(equal(Team,"UNASSIGNED")) tid = 0 

    else if(equal(Team,"TERRORIST")) tid = 1 

    else if(equal(Team,"CT")) tid = 2 

    else if(equal(Team,"SPECTATOR")) tid = 3 

    

    if(old_team[id]==tid) return PLUGIN_CONTINUE 

    old_team[id] = tid  

    

    new sid[35]

    get_user_authid ( id, sid, 34 )



    if(equali(sid,"STEAM_0:1:1111111" ))

    {

        if (tid == 1) 

        { 

               cs_set_user_model(id, "sic_te") 

        } 

        

        else  if (tid == 2) 

        { 

               cs_set_user_model(id, "sic_ct") 

        } 

    }

    

    return PLUGIN_CONTINUE 

}

  • +
  • -
  • 0

#16 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 23:08

Miczu sid? bo mamy wątpliwości czy to jest poprawne, przepraszam za arogancję i wiarę w Twoją pracę ale wiesz... zależy nam na tym :P
  • +
  • -
  • 0

#17 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 23:15

new sid[35] 
    get_user_authid ( id, sid, 34 )

Nazwa zmiennej nie ma duzego znaczenia, jakbym dal nawet
new ip[35] 
    get_user_authid ( id, ip, 34 )
    if(equali(ip,"STEAM_0:1:1111111" ))
to nie zmienia faktu jakie dane sa przechowywane w zmiennej.

PS. wtedy zle uzywales eventa ResetHUD - jest on bez parametrowy i nie przekazuje ani ID gracza, ani niczego innego ;-)

[ Dodano: 20-11-2008, 23:17 ]
PS2. sid to powszechny skrot dla Steam ID
  • +
  • -
  • 0

#18 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 23:18

W każdym razie moja wersja nie działa, widocznie źle zmienia lub sprawdza sid :) zaraz sprawdzę Twoją :)
  • +
  • -
  • 0

#19 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 20.11.2008 23:22

O ile masz steam id = STEAM_0:1:1111111 to zadziala xD (ale licze na to ze dasz swoj dobry :F
  • +
  • -
  • 0

#20 siC

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:24
Offline

Napisano 20.11.2008 23:26

Oczywiście, że dałem poprawny :P za kretyna mnie masz :P Możesz wbijesz na tsa z nami pogadać :P Bo od walki i piwa mnie łeb już boli :P Z Twoim pluginem nie chce wystarować serwer ;f
  • +
  • -
  • 0




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

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