Hop til indhold
Stavox

Gruppe Chat E2


Hancock

Recommended Posts

Commands:

!groupid    =   Join en ny gruppe

!beskeder =   Vis hvor mange beskeder der er i den nuværende gruppe

!c               =    Send en besked til gruppen

 

Du starter med at blive smidt ind i Global hvor alle ender som start. Der kan du chatte med alle eller joine din egen gruppe.

Denne E2 er blevet lavet af grund af jeg manglede en gruppe chat udenfor Gangs

 

Der vil fører en EGP skærm med hvor du kan se tidligere chats fra gruppen.

Wire S til en EGP skærm eller lad vær, det styre du selv. Den virker uden skærm.

 

Koden:

@name Group Chat
@inputs S:wirelink
@outputs 
@persist A Index GroupID:string AB:number
@trigger 

dsSetScope(2)
runOnChat(1)
if(first()){
    S:egpClear()
    Index=1
    GroupID="Global"
    dsJoinGroup(GroupID)
}
S:egpBox(100,vec2(497,256),vec2(30,512))
S:egpColor(100,vec(40,40,40))
S:egpText(101,"GruppeID: "+GroupID,vec2(497,5))
S:egpAlign(101,0,1)
S:egpAngle(101,-90)
Time=time("hour")+2+":"+time("min")+" | "
if(chatClk(owner())){
    LS=owner():lastSaid():explode(" ")
    if(LS[1,string]=="!c" & GroupID:length()>0){
        Text=owner():lastSaid():sub(4)
        dsSend("chat",GroupID,2,Text)
        if(A> 490){
            S:egpClear()
            A=20
        }
        S:egpText(Index,"DIG: "+Time+owner():name()+" - "+Text,vec2(10,A))
        S:egpColor(Index,vec(220,75,75))
        A+=20
        Index++
        AB++
    }
    if(LS[1,string]=="!groupid" & LS[2,string]:length()>0){
        A=0
        Index=1
        S:egpClear()
        printColor(vec(220,75,75),"[GROUP CHAT] ",vec(220,220,220),"Du har nu tilmeldt dig gruppen: "+LS[2,string])
        S:egpText(Index,Time+"Du har nu tilmeldt dig gruppen: "+LS[2,string],vec2(10,A))
        S:egpColor(Index,vec(75,220,75))
        A+=20
        Index++
        AB=1
        dsJoinGroup(LS[2,string])
        GroupID=LS[2,string]
        dsSend("chat",GroupID,2," Joinede denne gruppe!")
    }
    if(LS[1,string]=="!help"){
        printColor(vec(220,75,75),"Gruppe Chat - Commands")
        printColor(vec(220,220,220),"!groupid -- Join en gruppe")
        printColor(vec(220,220,220),"!c -- Skriv besked til gruppen")
        printColor(vec(220,220,220),"!beskeder -- Se Antal beskeder i gruppen")
    }
    if(LS[1,string]=="!beskeder"){
        printColor(vec(220,75,75),"[GROUP CHAT] ["+GroupID:upper()+"] ",vec(75,75,220),"Der er ialt blevet sendt "+AB:toString()+" Siden du joinede!")
    }
}

if(dsClk("chat")){
    AB++
    Text=dsGetString()
    Sender=dsGetSender()
    printColor(vec(220,75,75),"[GROUP CHAT] ["+GroupID:upper()+"] ",vec(75,75,220),Sender:owner():name(),vec(220,220,220)," - "+Text)
    if(A> 490){
        S:egpClear()
        A=20
    }
    S:egpText(Index,Time+Sender:owner():name()+" - "+Text,vec2(10,A))
    A+=20
    Index++
}

 

Link til kommentar
Del på andre sites

Meget fin E2! Det er dejligt at se nogen spillere der begynder på data signaler.

 

Tips til optimering:

Frit kode som det her kan sagtens blive smidt ind i dit if (first())

S:egpBox(100,vec2(497,256),vec2(30,512))
S:egpColor(100,vec(40,40,40))
S:egpText(101,"GruppeID: "+GroupID,vec2(497,5))
S:egpAlign(101,0,1)
S:egpAngle(101,-90)

Det kan dog godt være du lige skal bruge S:egpSetText(101, "GruppeID:" + GroupID) i din !groupID kommando. Og når du clearer din egp skal du nok køre det her igen, dog så undgår vi at det bliver kørt når der bliver skrevet i chatten. Du kunne evt. lave en function hvis du skal kører denne del af koden flere gang.

 

If statements som egentlig tjekker det samme indhold, kan blive sat sammen i en chain af if og elseif. Det vil gøre dine ops mindre hver gang den kun behøver at tjekke den første del af koden.

if (chatclk())
    // Her bruger vi ops på at tjekke koden for !kage, hvilket nok bruger 1-5 ops.
	if (lastsaid()=="!kage"){
		// Kør noget sejt kode.
	}
    // Her bruger vi 1-5 ops igen på at tjekke for !ikkekage, dog hvis det var !kage så har du ikke lyst til at køre den her del af koden.
	if (lastsaid()=="!ikkekage"){
		// Kør noget andet sejt kode.          
    }
}
    
	// Derfor kan du sætte det op med elseif.
if (chatclk())
    // Nu vil vi stadigvæk køre begge igennem hvis der blev sagt !ikkekage, men hvis der kun blev sagt !kage. Så kører vi kun den første igennem
	if (lastsaid()=="!kage"){
		// Kør noget sejt kode.
	}
   	elseif (lastsaid()=="!ikkekage"){
		// Kør noget andet sejt kode.          
    }
}
    

 

 

Der er sikkert lidt mere du kunne ændre, men det her er nok det jeg ser flest folk lave et par fejl i. (Fejl og fejl, lad os bare sige de ikke optimere det ordentlig)

Link til kommentar
Del på andre sites

Arkiveret

Dette emne er nu arkiveret og er lukket for yderligere svar

Gæst
Dette emne er nu lukket for yderligere svar
×
×
  • Tilføj...

COOKIE- OG PRIVATLIVSPOLITIK PÅ STAVOX.DK

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privatlivspolitik - Vilkår for brug.