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

Wysłany: 2017-11-13, 20:27


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

Witam wszystkie osoby tu zebrane, chcia?bym otrzyma? pomoc w sprawie skryptu na salon. Skrypt powinien pokazywa?, ?e kto? nie ma tyle PLN, gdy kto? nie ma Z? i ?e zakupi? pojazd, ale ?adna z tych informacji si? nie pojawia. W DB3 tylko taki b??d: https://i.imgur.com/XYl1hEV.png
Kod z linijki 22 z b??du:
setVehiclePlateText(veh,SALONOWE)

Oto kod Lua ca?ego skryptu:
--createBlip(-1966.17,282.17,47.7055,2,0,0,0,0,0,275)
createBlip(-934.32,-527.29,25.9555,2,0,0,0,0,0,275)
createBlip(766.771944.255.3755,2,0,0,0,0,0,275)



local positionVehicles = {
    -- nazwamodelprzebiegcenax,y,z,rx,ry,rzsprzeda?
    -- Salon Zwykly i luksus
           {'Bobcat'422732227145757.371966.415.34359.2359.8270.8},
      {'Manana'410743121280,778.941941.445.43359.540.0090.59},
      {'Walton'47872479900778.801952.235.34359.27359.9990.51},
     -- {'Perennial'404717321250, -930.63, -537.2225.69359.74359.99339.01},

}
for i,v in pairs(positionVehicles) do
    local veh=createVehicle(v[2], v[5], v[6], v[7], v[8], v[9], v[10], v[11])
    setElementData(veh,'vehicle:desc','Pojazd: '..v[1]..'\nCena: '..v[4]..' PLN\nPrzebieg: '..v[3]..' km\nAby Kupi? pojazd wsi?dz na F i wpisz /kuppojazd')
    setVehicleOverrideLights(veh1)
    setElementFrozen(veh,true)
    setVehicleColor(veh99,99,99)
    setVehiclePlateText(veh,SALONOWE)
    setVehicleDamageProof(vehtrue)
    setElementData(veh,'vehicle.selling'true)

    veh:setData('vehsell:info', {
        ['cost']=(v[4]),
        ['model']=v[2],
        ['mileage']=v[3],
        ['selling']=v[12]
    }, false)
end

addEventHandler('onVehicleEnter'resourceRoot, function(plrseatjacked)
    if seat~=0 then return end
    if source:getData('vehsell:info') and source:getData('vehsell:info').selling==1 then
        plr:outputChat('* Pojazd nie jest dost?pny w sprzeda?y.'25500)
        return
    end

    local data=source:getData('vehsell:info')
    if not data then return end

    plr:setData('vehsell:info', {
        ['cost']=data.cost,
        ['model']=data.model,
        ['mileage']=data.mileage,
    }, false)

    plr:outputChat(' Aby zakupi? ten pojazd wpisz /kuppojazd')
end)

addEventHandler('onVehicleExit'resourceRoot, function(plrseatjacked)
    if seat~=0 then return end

    local data=plr:getData('vehsell:info')
    if not data then return end

    plr:removeData('vehsell:info')
end)

addCommandHandler('kuppojazd', function(plrcmd)
    local data=plr:getData('vehsell:info')
    if not data then return end

    if getPlayerMoney(plr) < data.cost then
        triggerClientEvent(plr,"addNotification",root,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")
        return
    end

    local vehicle=plr:getOccupiedVehicle()
    if vehicle then
        removePedFromVehicle(vehicle)
    end

    local cost=data.cost
    local model=data.model
    local mileage=data.mileage
    local uid=getElementData(plr,'player:uid') or 0
    takePlayerMoney(plrcost)
    if mileage <= 2000 then
    exports["ogrpg-db"]:dbSet("INSERT INTO ogrpg_vehicles (model,ownedPlayer,mileage,registered,parking) VALUES (?,?,?,?,1)"modelgetElementData(plr,"player:uid"),mileage,"false")
    else
    exports["ogrpg-db"]:dbSet("INSERT INTO ogrpg_vehicles (model,ownedPlayer,mileage,registered,parking) VALUES (?,?,?,?,1)"modelgetElementData(plr,"player:uid"),mileage,"true")
    end
    triggerClientEvent(plr,"addNotification",root,string.format("Zakupi?e? sw?j pojazd "..getVehicleNameFromModel(model)..", znajdziesz go w przechowywalni."),"info")
    
end)

Prosz? o szybk? pomoc w tej sprawie Stawiam :piwo: i R*

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 20:31


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Zamiast: setVehiclePlateText(veh,SALONOWE)
daj: setVehiclePlateText(veh,"SALONOWE")

SALONOWE nie jest zmienn? tylko s?owem, wi?c KONIECZNIE musi by? w "" lub ''.

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 21:05


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

Teraz ?adnego b??du niema. Powracaj?c do drugiej sprawy dlaczego nie pojawia mi si? informacje ?e zakupi?em auto albo ?e nie mam wystarczaj?ca pieni?dzy. ?adnego DB3 nie ma.

Podpis
Jeśli nie możesz czegoś zrobić dobrze, przynajmniej spraw, żeby wyglądało dobrze.
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 21:30


polaczkos







Wiek: 25
Na forum: 4085 dni
Posty: 168
Nick w MP: polaczkos

Piwa: 3

Respekt: 45,3

a masz w??czony skrypt na notyfikacje ?

triggerClientEvent(plr,"addNotification",root,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-13, 22:27


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

"polaczkos" napisał/a:

a masz w??czony skrypt na notyfikacje ?

triggerClientEvent(plr,"addNotification",root,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")


Tak jak wy?ej, spr?buj zamiast tego da? np. outputChatBox("Test")

je?li b?dzie to wida?, to znaczy, ?e system notyfikacji jest wy??czony, zepsuty lub nie ma go wcale.

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-14, 14:17


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

przemek1835, Po zmianie tego na
outputChatBox("Test")
tekst si? wy?wietla. Jest to dziwne poniewa? notyfikacje wsz?dzie dzia?aj? tylko nie tu.
Kod na robienie notyfikacji przez RCON: To dzia?a
addCommandHandler("notification", function(plr,cmd,tyr,...)
    if getAdmin(plr,3) or getAdmin(plr,4then
        if not ... or not tyr then triggerClientEvent(plr,"addNotification",root,"Wpisz /notification [error/success/warning/info] (tekst) ","error") return end
        local text=table.concat({...}, " ")
        for _p in pairs(getElementsByType('player')) do
        triggerClientEvent(p,"addNotificatione",root,text,tyr)
        end
    end
end)

Kod tworzenia notyfikacji przy kupnie auta: To ju? nie dzia?a
addCommandHandler('kuppojazd', function(plrcmd)
    local data=plr:getData('vehsell:info')
    if not data then return end

    if getPlayerMoney(plr) < data.cost then
        triggerClientEvent(plr,"addNotification",root,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")
        return
    end

    local vehicle=plr:getOccupiedVehicle()
    if vehicle then
        removePedFromVehicle(vehicle)
    end

    local cost=data.cost
    local model=data.model
    local mileage=data.mileage
    local uid=getElementData(plr,'player:uid') or 0
    takePlayerMoney(plrcost)
    if mileage <= 2000 then
    exports["ogrpg-db"]:dbSet("INSERT INTO ogrpg_vehicles (model,ownedPlayer,mileage,registered,parking) VALUES (?,?,?,?,1)"modelgetElementData(plr,"player:uid"),mileage,"false")
    else
    exports["ogrpg-db"]:dbSet("INSERT INTO ogrpg_vehicles (model,ownedPlayer,mileage,registered,parking) VALUES (?,?,?,?,1)"modelgetElementData(plr,"player:uid"),mileage,"true")
    end
    triggerClientEvent(plr,"addNotification",root,string.format("Zakupi?e? sw?j pojazd "..getVehicleNameFromModel(model)..", znajdziesz go w przechowywalni."),"info")
    
end)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-14, 14:33


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

triggerClientEvent(p,"addNotificatione",root,text,tyr)

triggerClientEvent(plr,"addNotification",root,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")


Tu s? 2 inne nazwy event?w. "addNotificatione" i "addNotification"
Chocia? zamiast
plr,"addNotification",root

Daj co? takiego:
plr,"addNotification",plr


Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-14, 14:48


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

przemek1835, Zamiast
plr,"addNotification",root
da?
plr,"addNotification",plr
i zamieni? to wsz?dzie?

Podpis
Jeśli nie możesz czegoś zrobić dobrze, przynajmniej spraw, żeby wyglądało dobrze.
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-14, 15:45


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

"Janusz_GRA" napisał/a:

przemek1835, Zamiast
plr,"addNotification",root
da?
plr,"addNotification",plr
i zamieni? to wsz?dzie?


Najpierw zobacz, czy b?dzie dzia?a?. Ja tak robi? i wszystko jest OK.

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 16:03


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

triggerClientEvent(plr,"addNotification",plr,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")
Je?li to tak mia?o wygl?da? to nie dzia?a.

Podpis
Jeśli nie możesz czegoś zrobić dobrze, przynajmniej spraw, żeby wyglądało dobrze.
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 18:26


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Janusz_GRA, Poka? kawa?ek kodu z systemem notyfikacji.

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 18:58


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

przemek1835, 1 System
local cFunc={}
local cSetting={}

NTSClient={}
NTSClient.__index=NTSClient

--
addEvent('onClientAddNotification'true)
--

-- send to client triggerClientEvent(player'onClientAddNotification'playertext'type')
-- send to all clients triggerClientEvent(root'onClientAddNotification'roottext'type')

function NTSClient:new(...)
    local obj=setmetatable({}, {__index=self})
    if obj.constructor then
        obj:constructor(...)
    end
    return obj
end

function NTSClient:render()
    local now getTickCount() 
    if now >= self.tick then 
        self.tick getTickCount()+20
        self.count self.count-2
    end 
    
    local bg_xbg_y=937186
    local x=self.sx/2-(bg_x/self.zoom)/2
    
    if self.count==20 and self.nts[1then
        self.fadeOut=self.nts[1]
        table.remove(self.nts1)
    end
    if self.count<=20 and self.count>0 then
        self.pos_y=6/self.zoom+self.count/self.zoom
        self.posTXT_y=4/self.zoom+self.count/self.zoom
    elseif self.count==0 then
        self.pos_y=6/self.zoom
        self.posTXT_y=4/self.zoom
        self.count=280
    end
    
    if self.fadeOut then
        self.fadeOut.alpha=math.max(self.fadeOut.alpha-0.050)
        dxDrawImage(xself.pos_ybg_x/self.zoombg_y/self.zoomself.textures[tostring(self.fadeOut.type)], 000tocolor(255255255255*self.fadeOut.alpha), true)
        dxDrawText(self.fadeOut.msgx+(bg_x/6.25/self.zoom), self.posTXT_yx+(bg_x/7/self.zoom)+bg_x/self.zoom-bg_x/5/self.zoomself.posTXT_y+(bg_y/self.zoom), tocolor(255255255255*self.fadeOut.alpha), 0.5self.font1'center''center'truetruetrue)
        if self.fadeOut.alpha==0 then
            self.fadeOut=nil
        end
    end
    
    for i,v in pairs(self.nts) do
        if i>3 then return end
        
        v.alpha=math.min(v.alpha+0.051)
        dxDrawImage(xself.pos_y+((i-1)*150)/self.zoombg_x/self.zoombg_y/self.zoomself.textures[tostring(v.type)], 000tocolor(255255255255*v.alpha), true)
        dxDrawText(v.msgx+(bg_x/6.25/self.zoom), self.posTXT_y+((i-1)*150)/self.zoomx+(bg_x/7/self.zoom)+bg_x/self.zoom-bg_x/5/self.zoomself.posTXT_y+(bg_y/self.zoom)+((i-1)*150)/self.zoomtocolor(255255255255*v.alpha), 0.5self.font1'center''center'truetruetrue)
    end
end

function NTSClient:add(msgtype)
    if #self.nts==0 then
        self.count=280
    end
    
    outputConsole("["..string.upper(type).."] "..msg)
    table.insert(self.nts, {
        msg=msg, 
        type=type,
        alpha=0,
        tick=getTickCount()
    })
    -- ZAKOMENTOWANO DO STARTU SERWERA!
    local snd=playSound('s/' ..type.. '.mp3')
    setSoundVolume(snd0.3)
end

function NTSClient:onAddNTS(datatype)
    if not data then return end
    if not type then return end
    
    NTSClass:add(datatype)
end

-- wywolywanie klasy
function NTSClient:constructor(...)
    self.count=280
    self.fadeOut=nil
    self.nts={}
    
    local sx,sy=guiGetScreenSize()
    self.sxself.sy=sxsy
    self.zoom=2.4

    self.lu_start=getTickCount()
    self.pos_yself.posTXT_y=6/self.zoom4/self.zoom
    
    -- notifications textures
    self.textures={
        ['warning']=dxCreateTexture('i/nts_warning.png''dxt5'false'wrap'),
        ['error']=dxCreateTexture('i/nts_error.png''dxt5'false'wrap'),
        ['success']=dxCreateTexture('i/nts_success.png''dxt5'false'wrap'),
        ['info']=dxCreateTexture('i/nts_info.png''dxt5'false'wrap'),
    }
    --
    
    -- font
    self.font=dxCreateFont('f/myriad_prop.ttf'20)
    self.font1=dxCreateFont('f/archivo_narrow.ttf'20) 
    --
    
    self.funcAddNTS=function(datatypeself:onAddNTS(datatypeend
    addEventHandler('onClientAddNotification'rootself.funcAddNTS)
    
    self.renderFunc=function() self:render() end
    addEventHandler('onClientRender'rootself.renderFunc)

    self.tick 10 
    --outputDebugString('[calling] NTSClient: constructor')
end
NTSClass=NTSClient:new()

2 System:
local displayWidthdisplayHeight guiGetScreenSize();

local notificationData = {};

local notificationFont dxCreateFont('files/fonts/roboto.ttf'12 2false);
local iconsFont dxCreateFont('files/fonts/icons.ttf'12 2false);

addEventHandler('onClientRender'root,
    function()
        for kv in pairs(notificationData) do
            if (v.State == 'fadeIn'then
                local alphaProgress = (getTickCount() - v.AlphaTick) / 650;
                local alphaAnimation interpolateBetween(00025500alphaProgress'Linear');
                
                if (alphaAnimationthen
                    v.Alpha alphaAnimation;
                else
                    v.Alpha 255;
                end
                
                if (alphaProgress 1then
                    v.Tick getTickCount();
                    v.State 'openTile';
                end
            elseif (v.State == 'fadeOut'then
                local alphaProgress = (getTickCount() - v.AlphaTick) / 650;
                local alphaAnimation interpolateBetween(25500000alphaProgress'Linear');
                
                if (alphaAnimationthen
                    v.Alpha alphaAnimation;
                else
                    v.Alpha 0;
                end
                
                if (alphaProgress 1then
                    notificationData = {};
                end
            elseif (v.State == 'openTile'then
                local tileProgress = (getTickCount() - v.Tick) / 350;
                local tilePosition interpolateBetween(v.StartX00v.EndX00tileProgress'Linear');
                local tileWidth interpolateBetween(000v.Width00tileProgress'Linear');
                
                if (tilePosition and tileWidththen
                    v.CurrentX tilePosition;
                    v.CurrentWidth tileWidth;
                else
                    v.CurrentX v.EndX;
                    v.CurrentWidth v.Width;
                end
                
                if (tileProgress 1then
                    v.State 'fixTile';
                    
                    setTimer(function()
                        v.Tick getTickCount();
                        v.State 'closeTile';
                    endstring.len(v.Text) * 45 50001);
                end
            elseif (v.State == 'closeTile'then
                local tileProgress = (getTickCount() - v.Tick) / 350;
                local tilePosition interpolateBetween(v.EndX00v.StartX00tileProgress'Linear');
                local tileWidth interpolateBetween(v.Width00000tileProgress'Linear');
                
                if (tilePosition and tileWidththen
                    v.CurrentX tilePosition;
                    v.CurrentWidth tileWidth;
                else
                    v.CurrentX v.StartX;
                    v.CurrentWidth 0;
                end
                
                if (tileProgress 1then
                    v.AlphaTick getTickCount();
                    v.State 'fadeOut';
                end
            elseif (v.State == 'fixTile'then
                v.Alpha 255;
                v.CurrentX v.EndX;
                v.CurrentWidth v.Width;
            end
            
            roundedRectangle(v.CurrentX2025 v.CurrentWidth25tocolor(000150 v.Alpha 255), _true);
            dxDrawRectangle(v.CurrentX202525tocolor(000255 v.Alpha 255), true);
            
            if (v.Alpha == 255then
                dxDrawText(v.Textv.CurrentX 25 1020v.CurrentX 25 10 v.CurrentWidth 2020 25tocolor(255255255255), 0.40notificationFont'center''center'truefalsetrue);
            end
            
            if (v.Type == 'error'then
                dxDrawText('&#61553;'v.CurrentX 520v.CurrentX 25 1020 25tocolor(2159090v.Alpha), 0.50iconsFont'center''center'falsefalsetrue);
            elseif (v.Type == 'warning'then
                dxDrawText('&#61553;'v.CurrentX 520v.CurrentX 25 1020 25tocolor(22018080v.Alpha), 0.50iconsFont'center''center'falsefalsetrue);
            elseif (v.Type == 'info'then
                dxDrawText('&#61530;'v.CurrentX 520v.CurrentX 25 1020 25tocolor(85180245v.Alpha), 0.50iconsFont'center''center'falsefalsetrue);
            elseif (v.Type == 'success'then
                dxDrawText('&#61528;'v.CurrentX 520v.CurrentX 25 1020 25tocolor(80205105v.Alpha), 0.50iconsFont'center''center'falsefalsetrue);
            end
        end
    end
)

function addNotification(texttype)
    if (text and typethen
        if (notificationData ~= nilthen
            table.remove(notificationData#notificationData);
        end
        
        table.insert(notificationData,
            {
                StartX = (displayWidth 2) - (25 2),
                EndX = (displayWidth 2) - ((dxGetTextWidth(text0.40notificationFont) + 20 25) / 2),
                Text text,
                Width dxGetTextWidth(text0.40notificationFont) + 20,
                Alpha 0,
                State 'fadeIn',
                Tick 0,
                AlphaTick getTickCount(),
                CurrentX = (displayWidth 2) - (25 2),
                CurrentWidth 0,
                Type type or 'info'
            }
        );
        
        playSoundFrontEnd(11);
    end
end

function roundedRectangle(xywhborderColorbgColorpostGUI)
    if (and and and hthen
        if (not borderColorthen
            borderColor tocolor(000200);
        end
        
        if (not bgColorthen
            bgColor borderColor;
        end
        
        --> Background
        dxDrawRectangle(xywhbgColorpostGUI);
        
        --> Border
        dxDrawRectangle(2141borderColorpostGUI); -- top
        dxDrawRectangle(2h41borderColorpostGUI); -- bottom
        dxDrawRectangle(1214borderColorpostGUI); -- left
        dxDrawRectangle(w214borderColorpostGUI); -- right
    end
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 19:22


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Heh, no to inna nazwa eventu. Zamiast

triggerClientEvent(plr,"addNotification",plr,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")

daj

triggerClientEvent(plr,"onClientAddNotification",plr,"Nie posiadasz wystarczajacej kwoty pieni?dzy!","error")


Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 19:55


Janusz_GRA

NO NAME






Wiek: 26
Na forum: 3716 dni
Posty: 223
Nick w MP: michalMonster

Piwa: 175

Respekt: 85,8

przemek1835, Ok teraz dzia?a, zamieni? teraz wszystko na ten kod co wy?ej?

Podpis
Jeśli nie możesz czegoś zrobić dobrze, przynajmniej spraw, żeby wyglądało dobrze.
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-11-15, 20:02


Pevo

Jabłko






Wiek: 23
Na forum: 3589 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Janusz_GRA, zamie? to co nie dzia?a. Jak co? dzia?a, to lepiej zostawi? to w spokoju.

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Tagi: salon
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Salon 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