Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2012-05-03, 18:51


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Hej mam problem jak zdefiniowa? admina, ja zrobi?em tak:

Kod:

admin = IsPlayerAdmin(playerid);


ale wywala mi b??d.

Jak zdefiniowa? ?eby wsz?dzie jak dodam admin to b?dzie jako IsPlayerAdmin

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 19:17


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

M?g?by? bardziej wyt?umaczy?, o co Ci chodzi?
Je?li chodzi po prostu o skr?cenie, to dodaj na g?rze:
Kod:

#define admin IsPlayerAdmin

i u?ywasz:
Kod:

if(admin(playerid)) //je?li jest adminem


Mo?esz te? da?:
Kod:

#define admin IsPlayerAdmin(playerid)

I wtedy u?ywasz:
Kod:

if(admin) // czy jest adminem

Ale to drugie sprawdza tylko gracza pod "playerid", nie ?adnego innego.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 19:38


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Nie po prostu chc? doda? do paska informacji Admin?w online mam ju? graczy.

Czyli tak na g?rze

Kod:

new gracze;



P??niej w OnPlayerSpawn mam
Kod:

gracze++;


w OnPlayerDisconnect mam
Kod:

gracze--;


itd.

No i teraz moje pytanie jak zrobic tak samo ale ?eby to by? admin. Moim zdaniem trzeba na g?rze mapy zdefiniowa? ?e admin = IsPlayerAdmin.



ja mam tak ale wywala mi b??d:

Kod:

admin = IsPlayerAdmin(playerid);


Jak to inaczej zdefiniowa? aby nie wywala?o b??du i dobrze dzia?a?o ??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 19:41


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

Na g?rze dodaj:
Kod:

new admins = 0;


Potem w public OnRconLoginAttempt (utw?rz jak nie masz):
Kod:

public OnRconLoginAttempt(ip[], password[], success)
{
if(success) admins++;
return 1;
}


A w OnPlayerDisconnect:
Kod:

if(IsPlayerAdmin(playerid)) admins--;


I potem w TextDraw wklepujesz zmienn? "admins" i b?dzie ona zawiera? liczb? admin?w.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 19:59


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Nie dzia?a ju? od samego pocz?tku kiedy wejd? ju? jest ustawione na 1 czyli ?e jest ju? 1 admin.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 20:24


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

A logujesz si? na admina? No i sprawd? czy poprawnie wklepujesz t? zmienn? do textdrawu, sprawd? te? czy ten textdraw si? od?wie?a do?? cz?sto. Najlepiej ?eby? wywo?ywa? "refresh" tego textdrawa wtedy, kiedy ulega zmianie warto?? zmiennej "admins".

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 20:50


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Tak w?a?nie chodzi o to ?e jak wchodz? na server bez logowania to pokazuje ?e jest ju? 1 admin, co do od?wie?ania to od?wie?a si? co sekund?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-03, 20:58


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

To mam inn? propozycj?. Usu? t? zmienn? "admins" i zamiast niej daj CountAdmins() w textdrawie. Na dole gamemode dodaj:
Kod:


stock CountAdmins()
{
new count = 0;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i) || !IsPlayerAdmin(i)) continue;
count++;
}
return count;
}


Mog?em od razu tak Ci da?, zamiast dawa? Ci ten spos?b ze zmienn?, przepraszam :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 10:29


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Ok mam do Ciebie jeszcze jedn? pro?b?, a jak by zrobi? ?eby w tym pasku pisa?o od ilu minut grasz. Jak zrobi? to z Timerem np.

Grasz: 0 godzin 5 minut

Co? w tym stylu ??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 10:44


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
G?ra mapy

Kod:

new Timer[MAX_PLAYERS], Sek[MAX_PLAYERS, Min[MAX_PLAYERS], Hour[MAX_PLAYERS];


OnPlayerConnect

Kod:

Timer[playerid] = SetTimerEx("Czas",1000,0,"i",playerid);


Gdzie? na dole mapki

Kod:

forward Czas(playerid);
public Czas(playerid)
{
Sek[playerid]++;
if(Sek[playerid] > 60)
{
Sek[playerid] = 0;
Min[playerid]++;
}
if(Min[playerid] == 60)
{
Min[playerid] = 0;
Hour[playerid]++;
}
TextDrawSetString(...)
return 1;
}


P??niej w komendzie, czy gdzie chcesz, aby to pokazywa?o:

Kod:

new string[64];

format(string, sizeof(string, , "Grasz: %d godzin %d minut %d sekund",Hour[playerid], Min[playerid], Sek[playerid]);


OnPlayerDisconnect

Kod:

KillTimer(Timer[playerid]);


Ostatnio zmieniony przez Combacior 2012-05-04, 11:17, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 10:55


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

CombaT, podany przez Ciebie spos?b ju? jest przestarza?y i nieoptymalny (50 graczy = 50 timer?w), do tego potrzebuje o wiele wi?cej pami?ci ;) Teraz robi si? inaczej:
Na g?rze mapy:
Kod:

new GameStart[MAX_PLAYERS];

W OnPlayerConnect
Kod:

GameStart[playerid] = gettime();


Na dole mapy:
Kod:

stock ConvertSeconds(seconds, &hours, &minutes, &sec) //by Quis
{
new hrs = floatround(seconds/3600, floatround_floor);
hours = hrs;
new mins = floatround((seconds-(hours*3600))/60, floatround_floor);
minutes = mins;
sec = seconds-((hours*3600)+(minutes*60));
return 1;
}


A pobieranie czasu gry:
Kod:

new hours, minutes, seconds;
ConvertSeconds(gettime()-GameStart[playerid], hours, minutes, seconds);

I zmienne o nazwach "hours", "minutes" i "seconds" zawieraj? teraz czas gry.

Pozdrawiam ;)


@DOWN
Jak podzielisz 3650 przez 3600 to na pewno nie wyjdzie zwyk?a liczba, tylko liczba zmiennoprzecinkowa. floatround tutaj to podstawa.

Ostatnio zmieniony przez Quis 2012-05-04, 12:48, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 12:39


P.Devil







Wiek: 29
Na forum: 5930 dni
Posty: 104

Piwa: 603

Respekt: 72,3

Ostrzeżeń: 40%
Quis, floatround nie jest do tego potrzebny.

"Quis" napisał/a:

przestarza?y i nieoptymalny (50 graczy = 50 timer?w), do tego potrzebuje o wiele wi?cej pami?ci

Nie m?wi?c ju?, ?e zwyk?e timery si? strasznie op??niaj?. (Nastaw timer na sekund?, a wykona si? za 1.25 sek)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 13:52


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Dobra ju? nie b?d? zak?ada? nowego tematu mam problem potrzebuje respawn samochod?w z funkcj? kt?ra b?dzie sprawdza? czy pojazd jest u?ywany czy nie, ?eby nie zabiera?o pojazdu w kt?rym siedzi gracz.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 13:56


Quis

Wszechwiedzący






Wiek: 31
Na forum: 5146 dni
Posty: 464
Nick w MP: Quis

Piwa: 1110

Respekt: 325
Respekt: 325Respekt: 325Respekt: 325

Co? takiego?
Kod:

stock RespawnVehicles()
{
for(new i=0; i<MAX_VEHICLES; i++)
{
if(GetVehicleModel(i) != 0 && GetVehiclePlayersCount(i) == 0)
SetVehicleToRespawn(i);
}
return 1;
}

stock GetVehiclePlayersCount(vehicleid)
{
new count = 0;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(!IsPlayerConnected(i)) continue;
if(IsPlayerInVehicle(i, vehicleid))
count++;
}
return count;
}


Mam nadziej? ?e napisa?em bez b??du :)

@EDIT
?eby respawnowa?o co 20 minut to tak:
W OnGameModeInit/OnFilterScriptInit:
Kod:

SetTimer("RespawnVehicles", 1000*60*20, true);


A pierwsz? linijk? mojego pierwszego kodu:
Kod:

stock RespawnVehicles()

Zamie? na:
Kod:

forward RespawnVehicles();
public RespawnVehicles()


Ostatnio zmieniony przez Quis 2012-05-04, 14:13, w całości zmieniany 4 razy  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-05-04, 14:03


xxmikel611xx

~!@#$%^!






Wiek: 30
Na forum: 5812 dni
Posty: 163
Nick w MP: Mikel__xD

Piwa: 159

Respekt: 35,3

Kod:

public OnPlayerCommandText( playerid, cmdtext[] )
{
if(!strcmp( cmdtext, "/vresp", true))
{
for(new v; v < MAX_VEHICLES; v++)
if(GetVehicleModel(v) && !IsVehicleUsed(v)) SetVehicleToRespawn(v);
SendClientMessageToAll(playerid, COLOR_GREEN, "Pojazdy zosta?y zrspawnowane!");
return 1;
}
return 0;
}

IsVehicleUsed(vehicleid) //Sprawdzanie czy auto jest u?ywane
{
(new p; p < GetMaxPlayers(); p++)
{
if(IsPlayerInVehicle(p, vehicleid))
{
return 1;
}
}
return 0;
}



ja mam tak.

[ Dodano: 2012-05-04, 19:13 ]
Mam jeszcze jedno pytanie jak do tego paska tak jak dodawa?em Admina teraz doda? Vip'a ??

Postaw piwo autorowi tego posta
 

 
Tagi: jak :: zdefiniować :: admina
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku